#include <stdio.h>
#include "view_font.h"
#include "util_picture.h"
#include "image.h"

#define FONT_TYPE  VFT_DEFAULT /* 测试字体: VFT_DEFAULT, VFT_ZK_LOGO */
#define FONT_SIZE  32 /* 字号 */
#define FONT_BOLD  0  /* 加粗 */
#define FONT_ANGLE 0  /* 旋转角度(逆时针) */

#define FONT_PRINT '#'
#define FONT_SPACE '-'
#define FONT_COLOR 0x00FF0000 /* 填充颜色ARGB格式,示例0x80112233,33为B,22为G,11为R,80为A(越大越透明) */

void BitMapTest(const char* utf8, bool isGrayMap)
{
    ViewFont::GetVF()->Printf(
        utf8,        /* 文本 */
        FONT_TYPE,   /* 字体 */
        FONT_SIZE,   /* 字号 */
        FONT_BOLD,   /* 加粗 */
        FONT_ANGLE,  /* 旋转角度(逆时针) */
        isGrayMap,   /* 使用灰度图 */
        stdout,      /* 输出到文件描述符 */
        FONT_PRINT,  /* 绘图字符 */
        FONT_SPACE); /* 空白字符 */
}

void PngTest(const char* utf8, bool isGrayMap, const char* pngFile)
{
    Image image(300, 300, IMAGE_FORMAT_BGRA);
    ImageGrid plane(image);
    plane.Clear(0xFFFFFF);

    ViewFont::GetVF()->Print(
        utf8,        /* 文本 */
        FONT_TYPE,   /* 字体 */
        FONT_SIZE,   /* 字号 */
        FONT_BOLD,   /* 加粗 */
        FONT_ANGLE,  /* 旋转角度(逆时针) */
        isGrayMap,   /* 使用灰度图 */
        plane,
        FONT_COLOR,
        0,
        0,
        0,
        0,
        false);

    UtilPicCreate(pngFile, &image);
}

int main()
{
    const char* text = "123\n\t!@#\n吃迟耻";

    /* 装载字体 */
    ViewFont::GetVF()->Load(VFT_DEFAULT, "../../resource/font/Droid_Sans_Fallback.ttf");
    ViewFont::GetVF()->Load(VFT_ZK_LOGO, "../../resource/font/ZhanKuXiaoLOGOTi-2.otf");

    BitMapTest(text, false);
    BitMapTest(text, true);

    PngTest(text, false, "./out.bitmap.png");
    PngTest(text, true, "./out.graymap.png");

    /* 卸载(内存释放) */
    ViewFont::GetVF()->UnLoad();
    return 0;
}
